home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / VS_804.ARJ / MISC.EXE / FUNC2DOC.PRG < prev    next >
Text File  |  1991-10-26  |  7KB  |  289 lines

  1. * Filename......: Func2Doc.Prg
  2. *
  3. * Author........: Vernon E. Six, Jr.
  4. *                 2908 Forest Hollow Lane #2329
  5. *                 Arlington, Texas  76006
  6. *                 Ph: (214) 283-3282 - Voice
  7. *                 Ph: (817) 695-0058 - BBS
  8. *
  9. * Last Update...: Sun  10-13-1991  02:42:29
  10. *
  11. * Notice........: Copyright (c) 1991 by Vernon E. Six, Jr.
  12. *                 All Rights Reserved World Wide
  13.  
  14. #include "FILEIO.CH"
  15. #include "SETCURS.CH"
  16.  
  17. STATIC SC_NOTE_1   := "Vern Six's Clipper ToolBox v8.00"
  18. STATIC SC_NOTE_2   := "CopyRight (c) 1991 by Vernon E. Six, Jr. - All Rights Reserved"
  19.  
  20. STATIC SN_PAGE_LEN := 66
  21. STATIC SN_TOP      := 5
  22. STATIC SN_BOTTOM   := 10     // Must be AT LEAST 7!!!
  23.  
  24. STATIC SN_LINE     := 0
  25. STATIC SN_PAGE     := 1
  26.  
  27. STATIC SL_BOLD     := .F.   // Bold Status
  28. STATIC SL_UND      := .F.   // Underline Status
  29.  
  30. FUNCTION Func2Doc( pc_FileName, pc_Page )
  31. *****
  32. *
  33. * Create a DOC file
  34. *
  35. * Requires FuncDoc.Dbf
  36. *
  37. *     # Field Name Type  Len   Dec
  38. *   --------------------------------
  39. *     1 FUNC_NAME    C    10    0
  40. *     2 SHORT        C    56    0       // Changed
  41. *     3 DESC         M    10    0
  42. *     4 SYNTAX       M    10    0
  43. *     5 PASS         M    10    0
  44. *     6 RETURN       M    10    0
  45. *     7 NOTES        M    10    0
  46. *     8 EXAMPLE      M    10    0
  47. *     9 USAGE        M    10    0
  48. *    10 SEEALSO      M    10    0
  49. *
  50. *****
  51. LOCAL c_FileName
  52. LOCAL n_Handle
  53. LOCAL n_CurrRec  := 0
  54. LOCAL a_TblCont  := {}
  55.  
  56.    VS_InitVern()
  57.    VS_NewScrn()
  58.  
  59.    VS_InitPrtr()
  60.  
  61.    *****
  62.    * Does the user want to start on a different page?
  63.    *****
  64.    IF pc_Page <> NIL
  65.       SN_PAGE = VAL(pc_Page)
  66.    ENDIF
  67.  
  68.    *****
  69.    * Make sure he specified a filename
  70.    *****                              
  71.    IF PCOUNT() = 0
  72.       VS_TELL(3,0,"",PADC("Proper Syntax is: Func2Doc {FileName} [{page}] [Return]",60),"")
  73.       RETURN(NIL)
  74.    ENDIF
  75.                                       
  76.    dbUseArea(,,pc_FileName,"FUNC_DOC")
  77.    dbCreateIndex( pc_FileName, "FUNC_NAME", {||FUNC_NAME}, .F. )
  78.    dbGoTop()
  79.  
  80.    *****
  81.    * Open the .DATE file (since we are going to create it!)
  82.    *****
  83.    c_FileName = ALLTRIM(pc_FileName)+".TXT"
  84.  
  85.    IF (n_Handle := FCREATE( c_FileName, 0 ) ) = F_ERROR
  86.       VS_TELL(3,0,PADC("Unable to create "+c_FileName))
  87.       RETURN(NIL)
  88.     ELSE
  89.       VS_Write(n_Handle)     
  90.    ENDIF
  91.  
  92.    VS_GrabScr()
  93.  
  94.       VS_Palette(2)
  95.       VS_NewScrn()
  96.  
  97.       VS_Wind(8,13,16,66,"","")
  98.  
  99.       SETCURSOR(SC_NONE)
  100.  
  101.       @ 10,15 SAY PADC("Fung2Doc.Exe      Sat  10-26-1991  22:23:26",50)
  102.  
  103.       @ 12,15 SAY PADC("Writing Data File!",50)
  104.  
  105.       @ 14,15 SAY REPLICATE("░",50)
  106.  
  107.  
  108.       *****
  109.       * Top Margin
  110.       *****
  111.       FOR n_Cntr = 1 TO SN_TOP
  112.          VS_WriteLn( [] )
  113.       NEXT n_Cntr
  114.       SN_LINE = SN_TOP
  115.  
  116.  
  117.       DO WHILE .NOT. FUNC_DOC->( EOF() )
  118.  
  119.          IF INKEY(.05) > 0
  120.             EXIT
  121.          ENDIF
  122.  
  123.          n_CurrRec++
  124.  
  125.          @ 14,15 SAY REPLICATE("█", VS_ScrlBar( n_CurrRec, 50, RECCOUNT() ))
  126.  
  127.          *****
  128.          * Keep track of everything in the Table of Contents
  129.          *****                                              
  130.          AADD( a_TblCont, { FUNC_DOC->FUNC_NAME, SN_PAGE } )
  131.  
  132.          VS_WriteLn( SPACE(3)+ VS_Bold(FUNC_DOC->FUNC_NAME +SPACE(6)+ LEFT(FUNC_DOC->SHORT,50)) )
  133.          SN_LINE++
  134.          
  135.          VS_WriteLn( [] )
  136.          SN_LINE++
  137.  
  138.          WrtFld( "Description:", FUNC_DOC->DESC    )
  139.          WrtFld( "Syntax:     ", FUNC_DOC->SYNTAX  )
  140.          WrtFld( "Pass:       ", FUNC_DOC->PASS    )
  141.          WrtFld( "Return:     ", FUNC_DOC->RETURN  )
  142.          WrtFld( "Notes:      ", FUNC_DOC->NOTES   )
  143.          WrtFld( "Example:    ", FUNC_DOC->EXAMPLE )
  144.          WrtFld( "Usage:      ", FUNC_DOC->USAGE   )
  145.          WrtFld( "See Also:   ", FUNC_DOC->SEEALSO )
  146.  
  147.          Chk4NewPage(.T.)
  148.  
  149.          FUNC_DOC->( dbSkip() )
  150.  
  151.       ENDDO
  152.  
  153.       FOR n_Cntr = 1 TO LEN( a_TblCont )
  154.  
  155.          VS_WriteLn( a_TblCont[n_Cntr,1] + REPLICATE(".",50) + ;
  156.                      ALLTRIM(STR(a_TblCont[n_Cntr,2])) )
  157.  
  158.       NEXT n_Cntr
  159.  
  160.    VS_PutScr()
  161.  
  162.    dbCloseAll()
  163.  
  164. RETURN(NIL)
  165. *** EOF: Func2Doc() *********************************************************
  166.  
  167.  
  168.  
  169. FUNCTION WrtFld( pc_Hdr, pc_Text )
  170. *****
  171. * Prints the specified memo field
  172. *****
  173. LOCAL n_Cntr
  174. LOCAL c_OutLine := ""
  175. LOCAL n_Pos     := 0
  176.  
  177.    VS_WriteLn( SPACE(3) + VS_Bold(pc_Hdr) )
  178.    SN_LINE++
  179.  
  180.    Chk4NewPage()
  181.  
  182.    FOR n_Cntr = 1 TO MLCOUNT(pc_Text,70)
  183.       
  184.       c_OutLine = MEMOLINE( pc_Text, 70, n_Cntr )
  185.  
  186.       VS_Write  ( SPACE(5) )
  187.  
  188.       DO WHILE LEN(c_OutLine) > 0
  189.  
  190.          IF (n_Pos := AT("^",c_OutLine)) = 0
  191.             VS_Write  ( c_OutLine )
  192.             c_OutLine = ""
  193.             LOOP
  194.          ENDIF
  195.  
  196.          IF n_Pos > 1
  197.             VS_Write  ( SUBSTR(c_OutLine,1,n_Pos-1) )
  198.          ENDIF
  199.  
  200.          DO CASE
  201.  
  202.             CASE SUBSTR(c_OutLine,n_Pos,2) = "^B"
  203.                VS_Write  ( IF(SL_BOLD,VS_BoldOff(),VS_BoldOn()) )
  204.                SL_BOLD = IF(SL_BOLD,.F.,.T.)
  205.  
  206.             CASE SUBSTR(c_OutLine,n_Pos,2) = "^U"
  207.                VS_Write  ( IF(SL_UND,VS_UndOff(),VS_UndOn()) )
  208.                SL_UND  = IF(SL_UND,.F.,.T.)
  209.  
  210.          ENDCASE
  211.  
  212.          IF n_Pos < (LEN(c_OutLine)-1)
  213.             c_OutLine = SUBSTR(c_OutLine,n_Pos+2)
  214.           ELSE
  215.             c_OutLine = ""
  216.          ENDIF
  217.  
  218.       ENDDO
  219.  
  220.       VS_WriteLn( [] )
  221.       SN_LINE++
  222.  
  223.       Chk4NewPage()
  224.  
  225.    NEXT n_Cntr
  226.  
  227.    VS_WriteLn( [] )
  228.    SN_LINE++
  229.  
  230.    Chk4NewPage()
  231.  
  232. RETURN(.T.)
  233. *** EOF: WrtFld() ***********************************************************
  234.  
  235.  
  236. FUNCTION Chk4NewPage(pl_ForcePage)
  237. *****
  238. * Checks to see if we need a new page
  239. *****                                
  240. LOCAL n_Cntr
  241.  
  242.    IF pl_ForcePage = NIL
  243.       IF SN_LINE < (SN_PAGE_LEN-SN_BOTTOM)
  244.          RETURN(NIL)
  245.       ENDIF
  246.    ENDIF
  247.  
  248.    DO WHILE SN_LINE < (SN_PAGE_LEN-SN_BOTTOM)
  249.       VS_WriteLn( [] )
  250.       SN_LINE++
  251.    ENDDO
  252.  
  253.    VS_WriteLn( [] )
  254.    SN_LINE++
  255.  
  256.    VS_WriteLn( [] )
  257.    SN_LINE++
  258.    
  259.    VS_WriteLn( PADC( SC_NOTE_1, 80 ) )
  260.    SN_LINE++
  261.  
  262.    VS_WriteLn( PADC( SC_NOTE_2, 80 ) )
  263.    SN_LINE++
  264.  
  265.    VS_WriteLn( []                    )
  266.    SN_LINE++
  267.  
  268.    VS_WriteLn( PADC( "- "+ALLTRIM(STR(SN_PAGE))+" -", 80 ) )
  269.    SN_LINE++
  270.  
  271.    DO WHILE SN_LINE < SN_PAGE_LEN
  272.       VS_WriteLn( [] )
  273.       SN_LINE++
  274.    ENDDO
  275.  
  276.    *****
  277.    * Top Margin
  278.    *****
  279.    FOR n_Cntr = 1 TO SN_TOP
  280.       VS_WriteLn( [] )
  281.    NEXT n_Cntr
  282.    SN_LINE = SN_TOP
  283.  
  284.    SN_PAGE++
  285.  
  286. RETURN(NIL)
  287. *** EOF: Chk4NewPage() ******************************************************
  288.  
  289.